;
(deftemplate kontroler
	(slot nazwa)
	(slot ilosc_wystawionych_mandatow (default 0))
	(slot poblazliwosc (default 0))
)

;
(deffacts kotroler2
	(kontroler
		(nazwa poblazliwy_kontroler)
		(ilosc_wystawionych_mandatow 0)
		(poblazliwosc 35)
	)
	(akcja
		(typ_akcji kontrola)
	)
)

(defrule przebieg_kontroli
	?a <- (akcja (typ_akcji kontrola))
	?o <- (osoba (nazwa ?no)(koszt ?ko)(rodzaj_pojazdu mpk))
	?k <- (kontroler (nazwa ?nk)(ilosc_wystawionych_mandatow ?im)(poblazliwosc ?po))
	?b <- (bilet (kto ?no)(status ?st))
	=>
	(if (= (str-compare ?st tak) 0)
		then
		(printout t "Kontrola biletow mpk, " ?no " nie ma zadnych problemow." crlf)
		else
		(if (< (random 0 100) ?po)
			then
			(printout t "Kontrola biletow mpk, " ?no " trafil na poblazliwego kontrolera, tym razem obejdzie sie bez mantadu." crlf)
			else
			(printout t "Kontrola biletow mpk, " ?no " dostaje mandat za jazde na gape." crlf)
			(modify ?k(ilosc_wystawionych_mandatow (+ ?im 1)))
			(modify ?o(koszt (+ ?ko 100)))
		)
	)
	(retract ?a)
)